package com.angus.modules.content.service;

import com.angus.common.core.web.domain.AjaxResult;
import com.angus.modules.content.dto.PayPalOrderPayDto;
import com.paypal.api.payments.Payment;
import com.paypal.base.rest.PayPalRESTException;

import java.math.BigDecimal;

public interface PayPalService {

    /**
     * 支付
     * @param dto 支付参数
     * @return 支付对象
     */
    AjaxResult payPalPay(PayPalOrderPayDto dto);

    /**
     * 创建支付
     * @param orderNo 订单编号
     * @param total 金额
     * @param currency 货币
     * @param method 支付方式
     * @param intent 支付意图
     * @param description 描述
     * @return 支付对象
     * @throws PayPalRESTException
     */
    Payment createPayment(String orderNo, BigDecimal total, String currency, String method, String intent, String description) throws PayPalRESTException;

    /**
     * 执行支付
     * @param paymentId 支付编号
     * @param payerId 支付人编号
     * @return 支付对象
     * @throws PayPalRESTException
     */
    Payment executePayment(String paymentId, String payerId) throws PayPalRESTException;

    /**
     * 支付成功回调
     * @param paymentId 支付编号
     * @param payerId 支付人编号
     * @return 支付对象
     */
    AjaxResult paymentSuccess(String paymentId, String payerId);

    /**
     * 支付取消回调
     * @return 支付对象
     */
    AjaxResult paymentCancel(String paymentId, String payerId);
}
